﻿//=============================================================================
// Библиотека 'WPFExcelReport' предназначена для связи и передачи данных c PLC
//=============================================================================

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WPFExcelReport
{
      
    /// <summary>
    /// Интерфейс PLC
    /// </summary>
    internal interface IPlc
    {
        #region Константы

        #endregion

        #region Поля

        #endregion

        #region Свойства

        #endregion
              
        #region Внутренние методы

        #endregion

        #region Внешние методы

        /// <summary>
        /// Добавить переменные для чтения
        /// </summary>
        /// <param name="itemsRead"> переменные для чтения</param>
        /// <param name="error"> ошибка</param>
        /// <returns> указатели на переменные для чтения </returns>
        List<HandlItemRead> AddItemsRead(List<ItemRead> itemsRead, out bool error);

        /// <summary>
        /// Удалить переменные для чтения
        /// </summary>
        /// <param name="itemsRead"> указатели на переменные для чтения</param>
        /// <param name="error"> ошибка</param>
        void DelItemsRead(List<HandlItemRead> itemsRead, out bool error);

        /// <summary>
        /// Чтение переменных
        /// </summary>
        /// <param name="itemsRead"> указатели на переменные для чтения</param>
        /// <param name="error"> ошибка</param>
        /// <returns> результаты чтения </returns>
        List<ItemValue> ReadData(List<HandlItemRead> itemsRead, out bool error);


        /// <summary>
        /// Добавить переменные для записи
        /// </summary>
        /// <param name="itemsWrite"> переменные для записи</param>
        /// <param name="error"> ошибка</param>
        /// <returns> указатели на переменные для записи </returns>
        List<HandlItemWrite> AddItemsWrite(List<ItemWrite> itemsWrite, out bool error);

        /// <summary>
        /// Удалить переменные для записи
        /// </summary>
        /// <param name="itemsWrite"> указатели на переменные для записи</param>
        /// <param name="error"> ошибка</param>
        void DelItemsWrite(List<HandlItemWrite> itemsWrite, out bool error);

        /// <summary>
        /// Запись переменных
        /// </summary>
        /// <param name="itemsWrite"> указатели на переменные для записи</param>
        /// <param name="error"> ошибка</param>
        void WriteData(List<HandlItemWrite> itemsWrite, out bool error);

        #endregion

        #region События

        /// <summary>
        /// Изменение данных для чтения
        /// </summary>
        event EventHandler<ReadDataEventArgs> DataChange;

        #endregion

    }

    

}
